【读薄 CSAPP】零 系列概览

《深入理解计算机系统》课程笔记
主要参考文献:wdxtub.com网站


《深入理解计算机系统》是 CMU 教授 Bryant 和 O’Hallaron 共同撰写的一本计算机学科经典入门教材。先从数据的表示开始,自然而然引出用汇编描述的计算机基本运行的方式,接着介绍控制流、过程调用到跳转等高级话题,以了解了计算机运行的模式,并据此给出一些程序设计的技巧作为过渡。这之后开始涉及诸如内存、编译器、进程、信号、I/O、虚拟内存、动态内存分配等知识。这些东西看起来都非常吓人,但是老师很科学地把握好了『度』,让我们理解基本原理的同时却不会过早陷入无谓的复杂度,这样以后想要深入学习可以自己去探索。在单机的知识基本完备之后,开始涉及网络、同步、并行编程等高级话题,为后面的学习打下基础。

读薄部分

  • 零 系列概览
    壹 数据表示 - 不同的数据是如何存储与表示的
    无符号数,补码,浮点数,位操作,数学计算,汇编程序
  • 贰 机器指令与程序优化 - 控制流、过程调用、缓冲区溢出
    C 控制流程的表示,数据结构的分配和访问,体系架构和编译器,栈分配,寄存器,参数传递,运算指令,安全漏洞,指针
  • 叁 内存与缓存 - 内存层级与缓存机制
    内存技术,内存层级,缓存,磁盘,局部性,体系架构和操作系统
  • 肆 链接 - 不同的代码如何协同
    静态和动态链接,目标文件,符号解析,重定位,静态库,共享目标库,位置无关代码,库打桩
  • 伍 异常控制流 - 不同进程间的切换与沟通
    硬件异常,进程,进程控制,Unix 信号,非本地跳转
  • 陆 系统输入输出 - 怎么把不同的内容发送到不同的地方
    高层和底层 IO
  • 柒 虚拟内存与动态内存分配 - 现代计算机中内存的奥秘
    虚拟内存,地址翻译,动态存储分配
  • 捌 网络编程 - 从最原始套接字彻底理解网络编程
    Internet 服务,Web 服务器
  • 玖 并行与同步 - 协同工作中最重要的两个问题
    并行,并行服务器设计,线程,IO 复用,信号量,竞争条件,死锁